package library.frame;

import library.logic.Reader;

import javax.swing.table.AbstractTableModel;
import java.util.Vector;

/**
 * User: RockCrazy
 * Date: 05.01.12
 * Time: 19:21
 */
public class ReaderTableModel extends AbstractTableModel
{
	private Vector readers;

	/**
	 * Модель получает список читателей при создании
	 * @param readers
	 */
	public ReaderTableModel(Vector readers)
	{
		this.readers = readers;
	}

	/**
	 * Возвращаем номер клиента по номеру строки
	 * @param rowIndex
	 * @return
	 */
	public Reader getReader(int rowIndex)
	{
		if (readers != null)
		{
			if (rowIndex < readers.size() && rowIndex >= 0)
			{
				return (Reader) readers.get(rowIndex);
			}
		}
		return null;
	}

	/**
	 * Возвращаем количество строк
	 * @return
	 */
	public int getRowCount()
	{
		if (readers != null)
		{
			return readers.size();
		}
		return 0;
	}

	/**
	 * Количество столбцов - 9
	 * ID, Фамилия, Имя, Отчество, ДР, дата регистрации
	 * паспорт, адресс, телефон
	 * @return 9
	 */
	public int getColumnCount()
	{
		return 9;
	}

	/**
	 * Возвращаем имена столбцов
	 * @param column
	 * @return
	 */
	public String getColumnName(int column)
	{
		String[] colNames = {"№ пп", "Фамилия", "Имя", "Отчество", "Дата рождения", "Дата регистрации", "Паспорт","Адрес", "Телефон"};
		return colNames[column];
	}

	/**
	 * Разрешаем редактировать
	 * @param row
	 * @param col
	 * @return
	 */
	public boolean isCellEditable(int row, int col)
	{
		if (col < 1)
		{
			return false;
		} else
		{
			return true;
		}
	}

	/**
	 * Получаем ОБЪЕКТЫ
	 * @param rowIndex
	 * @param columnIndex
	 * @return
	 */
	public Object getValueAt(int rowIndex, int columnIndex)
	{
		if (readers != null)
		{
			// Получаем из вектора читателя
			Reader rdr = (Reader) readers.get(rowIndex);
			// В зависимости от колонки возвращаем ID, ФИО, ДР, дату реги, паспорт, адрес и телефон
			switch (columnIndex)
			{
				case 0:
					return rdr.getReaderId();
				case 1:
					return rdr.getReaderFam();
				case 2:
					return rdr.getReaderName();
				case 3:
					return rdr.getReaderOtch();
				case 4:
					return rdr.getReaderBirthday();
				case 5:
					return rdr.getReaderDateReg();
				case 6:
					return rdr.getReaderPassport();
				case 7:
					return rdr.getReaderAdress();
				case 8:
					return rdr.getReaderPhone();

			}
		}
		return null;
	}
}
